package com.breeze.components.web.config;

import io.undertow.server.DefaultByteBufferPool;
import io.undertow.websockets.jsr.WebSocketDeploymentInfo;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.web.embedded.undertow.UndertowServletWebServerFactory;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;

/**
 * Undertow 自定义配置
 *
 * @author breeze
 */
@AutoConfiguration
public class UndertowConfig implements WebServerFactoryCustomizer<UndertowServletWebServerFactory> {

  /** 设置 Undertow 的 websocket 缓冲池 */
  @Override
  public void customize(UndertowServletWebServerFactory factory) {
    // 默认不直接分配内存 如果项目中使用了 websocket 建议直接分配
    factory.addDeploymentInfoCustomizers(
        deploymentInfo -> {
          WebSocketDeploymentInfo webSocketDeploymentInfo = new WebSocketDeploymentInfo();
          webSocketDeploymentInfo.setBuffers(new DefaultByteBufferPool(false, 512));
          deploymentInfo.addServletContextAttribute(
              "io.undertow.websockets.jsr.WebSocketDeploymentInfo", webSocketDeploymentInfo);
        });
  }
}
